/*
 * @Author: ls
 * @Date: 2021-10-14 14:00:19
 * @LastEditTime: 2021-10-14 16:46:54
 * @LastEditors: Please set LastEditors
 * @Description: 敌人
 * @FilePath: \Alive-master\assets\script\game\boss\moveEnemy.ts
 */

import { Util } from '../../util';

const { ccclass, property } = cc._decorator;

@ccclass
export default class MoveEnemy extends cc.Component {
	/** 移动方向 */
	private _moveDir: cc.Vec2 = cc.Vec2.ZERO;
	/** 移动速度 */
	private _moveSpeed: number = 200;

	start(): void {
		this.schedule(this.randomDir, 5, cc.macro.REPEAT_FOREVER, 4); // 4 秒后开始运动，每 5 秒随机新方向
	}

	/**
	 * 随机方向
	 */
	randomDir(): void {
		let dir = Util.randomDir(0, 360);

		this._moveDir.x = dir.x;
		this._moveDir.y = dir.y;
	}

	update(dt: number): void {
		// 移动
		if (this._moveDir.x !== 0) {
			this.node.x += this._moveSpeed * this._moveDir.x * dt;
		}

		if (this._moveDir.y !== 0) {
			this.node.y += this._moveSpeed * this._moveDir.y * dt;
		}

		// 边界回弹
		if (this.node.x < -cc.winSize.width / 2) this._moveDir.x = this._moveDir.x > 0 ? this._moveDir.x : -this._moveDir.x;
		if (this.node.x > cc.winSize.width / 2) this._moveDir.x = this._moveDir.x < 0 ? this._moveDir.x : -this._moveDir.x;
		if (this.node.y > cc.winSize.height / 2) this._moveDir.y = this._moveDir.y < 0 ? this._moveDir.y : -this._moveDir.y;
		if (this.node.y < cc.winSize.height / 2 - 200) this._moveDir.y = this._moveDir.y > 0 ? this._moveDir.y : -this._moveDir.y;
	}
}
